package com.puhui.chome.util;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;

public class FileUtil {

    private FileUtil() {
    }

    private static final Logger logger = LoggerFactory.getLogger(FileUtil.class);

    /**
     * 获取根路径下properties配置文件配置信息
     * 
     * @return
     */
    public static String getProperties(String fileName, String confName) {
        Properties props = new Properties();
        try {
            InputStream fis = FileUtil.class.getResourceAsStream("/" + fileName);
            props.load(fis);
            return props.getProperty(confName);
        } catch (Exception e) {
            logger.error("获取根路径下properties配置文件配置信息异常" + e.getMessage(), e);
        }
        return null;
    }

    /**
     * 创建文件路径
     * 
     * @param filePath
     */
    public static File createFilePath(String filePath) {
        File file = new File(filePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        return file;
    }

    /**
     * 创建文件
     * 
     * @param filePath
     * @return
     */
    public static File createFile(String filePath) {
        File file = new File(filePath);
        String logInfoTitle = "创建单个文件";
        if (file.exists()) {
            logger.info(logInfoTitle + filePath + "，目标文件已存在，自动覆盖！");
        }
        if (filePath.endsWith(File.separator)) {
            logger.info(logInfoTitle + filePath + "失败，目标文件不能为目录！");
            return null;
        }
        // 判断目标文件所在的目录是否存在
        if (!file.getParentFile().exists()) {
            // 如果目标文件所在的目录不存在，则创建父目录
            logger.info("目标文件所在目录不存在，准备创建它！");
            if (!file.getParentFile().mkdirs()) {
                logger.info("创建目标文件所在目录失败！");
                return null;
            }
        }
        // 创建目标文件
        try {
            FileWriter fw = new FileWriter(file, false);
            fw.close();
        } catch (IOException e) {
            logger.error(logInfoTitle + filePath + "失败！" + e.getMessage(), e);
            file = null;
        }
        return file;
    }

    /**
     * 上传文件
     * 
     * @author xupeixi
     * @param path
     * @param filenName
     * @return
     */
    public static boolean upload(String path, MultipartFile file, String fileName) {
        if (file != null && !file.isEmpty()) {
            File targetFile = new File(path, fileName);
            if (!targetFile.exists()) {
                targetFile.mkdirs();
            }
            try {
                file.transferTo(targetFile);
            } catch (Exception e) {
                logger.error("上传文件异常" + e.getMessage(), e);
            }
            return true;
        } else {
            return false;
        }
    }

}